#include"server.hpp"

#define INF 0
#define DBG 1
#define ERR 2
#define LOG_LEVEL DBG
//\是续航符time是时间函数，strftime把时间格式化为一个时间字符串;如果传递的level大于LOG_LEVEL就打印
#define LOG(level,format,...) do{\
    if(level<LOG_LEVEL) break;\
    time_t t=time(NULL);\
    struct tm*ltm=localtime(&t);\
    char tmp[31]={0};\
    strftime(tmp,31,"%H:%M:%S",ltm);\
fprintf(stdout,"[%s %s:%d] ",format "\n",tmp,__FILE__,__LINE__,##__VA_ARGS__);\
}while(0)
//stdout是FILE*类型表示输出的文件流，"%s:%d"是格式化字符串，__FILE__和__LINE__是预定义的宏，表示当前文件名和行号
#define INT_LOG(format,...) LOG(INF,format,##__VA_ARGS__)
#define DBG_LOG(format,...) LOG(DBG,format,##__VA_ARGS__)
#define ERR_LOG(format,...) LOG(ERR,format,##__VA_ARGS__)
int main()
{
Buffer buf;
for(int i=0;i<300;i++)
{
    std::string str="hello..."+to_string(i)+"\n";
buf.WriteStringandPush(str);
}

while(buf.Readablesize()>0)
{
    std::string line=buf.Getlineandpop();//取一行：取到\n结尾
    INT_LOG("HELLO");
   // cout<<line<<endl;//如果没扩容成功，那么就不可能整齐的一行取到\n
}

// std::string str="abcdef..";

// cout<<str<<endl;
// buf.WriteStringandPush(str);
// std::string tmp;
// tmp=buf.ReadAsstring(buf.Readablesize());
// cout<<"tmp: "<<tmp<<endl;

// Buffer buf1;
// string tmp1;
// buf1.WriteBufferandpush(buf);
// tmp1=buf1.ReadAsstring(buf1.Readablesize());
// cout<<"tmp1: "<<tmp1<<endl;
//buf.ReadandPop((void*)tmp.c_str(),buf.Readablesize());
//cout<<"tmp: "<<tmp<<endl;
//cout<<"buf.read: "<<buf.Readablesize()<<endl;


return 0;
}

